package com.tbit.uqbike.webmanager.dao.log;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.tbit.config.datasource.DataSource;
import com.tbit.uqbike.object.pojo.dto.WorkOrderLogQueryDTO;
import com.tbit.common.entity.pojo.dto.BarChartDispatchLogDTO;
import com.tbit.common.entity.pojo.vo.DateResult;
import com.tbit.uqbike.object.pojo.statistics.DispatchLog;
import com.tbit.uqbike.object.pojo.statistics.ExportPowerLog;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author: chen
 * @Description: 调度记录
 * @Date: 创建于 11:13 2020/3/13
 */
@DS(DataSource.LOG)
public interface DispatchLogDao {
    /**
     * 调度次数日期统计
     */
    List<DateResult> statisticsByTime(BarChartDispatchLogDTO barChartDispatchLogDTO);

    List<DateResult> statisticsByTimeAndRegionId(BarChartDispatchLogDTO barChartDispatchLogDTO);

    /**
     * 调度记录份分页统计详细
     */
    List<DispatchLog> queryPage(WorkOrderLogQueryDTO queryDTO);

    /**
     * 调度次数统计导出
     */
    List<DispatchLog> exportByTime(WorkOrderLogQueryDTO queryDTO);

    /**
     * 调度记录份分页统计总数
     *
     * @param queryDTO .
     * @return .
     */
    Integer queryCount(WorkOrderLogQueryDTO queryDTO);

    List<ExportPowerLog> selectByType(HashMap<String, Object> params);

    List<ExportPowerLog> selectByTypeAndRegionId(HashMap<String, Object> params);

    DispatchLog getTimeById(String dispatchLogId);

    List<DispatchLog> getByIds(List<Integer> dispatchLogIds);

    /**
     * 根据时间分组获取时间内有效的调度记录
     */
    List<Map<String, Object>> getDispatchNumDay(Map<String, Object> map);

    /**
     * 时间内获取有效的调度记录
     */
    Map<String, Object> getYesterdayDispatchNum(Map<String, Object> map);

    /**
     * 根据审核id修改调度记录的审核状态
     */
    Integer amendAuditState(DispatchLog dispatchLog);

    /**
     * 根据审核id修改调度记录的审核状态
     */
    Integer updateAuditState(Map<String, Object> map);

    /**
     * 获取所有调度记录总数
     * @param accountId 区域id
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return 总数
     */
    Integer getAllDispatchCount(@Param("accountId")Integer accountId, @Param("startDate") Date startDate, @Param("endDate")Date endDate);
}
